package com.harvey.exampreparation.activity;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.harvey.exampreparation.R;
import com.harvey.exampreparation.adapter.ContactAdapter;
import com.harvey.exampreparation.entity.Contact;

import java.util.ArrayList;
import java.util.List;

/**
 * RecyclerView 实例
 *
 * 代码阅读顺序：
 *   res/layout/item_contact.xml
 *     -> entity/Contact
 *     -> adapter/ContactAdapter
 *     -> res/layout/activity_recycler_view.xml
 *     -> activity/RecyclerViewActivity（本类）
 */
public class RecyclerViewActivity extends AppCompatActivity {

    /*
     * 变量声明
     */
    private List<Contact> contacts;              // 用于存储 Contact 的列表对象
    private ContactAdapter contactAdapter;       // 声明设置 RecyclerView 需要用到的适配器对象
    private RecyclerView recyclerView;           // RecyclerView 对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycler_view);

        // 1. 绑定控件
        viewBinding();

        // 2. 初始化列表数据
        initData();

        // 3. 设定 RecyclerView
        setupRecyclerView();
    }

    /**
     * 1. 绑定控件
     *    利用 findViewById 获取到 RecyclerView 控件的实例
     */
    private void viewBinding() {
        recyclerView = findViewById(R.id.recycler_contact);
    }

    /**
     * 2. 初始化数据
     *    一般这里都是要进行网络请求或者是读取 SQLite 数据库来获取数据,
     *    但为了简单起见，这里只直接将一些虚拟数据添加到内存当中
     */
    private void initData() {
        contacts = new ArrayList<>();

        contacts.add(new Contact("巫婷婷", "15863038110"));
        contacts.add(new Contact("魏想","13603496982"));
        contacts.add(new Contact("陆慧","13216057956"));
        contacts.add(new Contact("戚帆","18070441126"));
        contacts.add(new Contact("甫颖","15858053653"));
        contacts.add(new Contact("公海燕","18259628838"));
        contacts.add(new Contact("成英","13997519074"));
        contacts.add(new Contact("赫丹","18811005197"));
        contacts.add(new Contact("翟峰","18267965010"));
        contacts.add(new Contact("曾玉英","13898386841"));
        contacts.add(new Contact("督秀华","18564296567"));
        contacts.add(new Contact("解峰","13861941706"));
        contacts.add(new Contact("左秀英","18207528493"));
        contacts.add(new Contact("卜燕","13173950360"));
        contacts.add(new Contact("王秀荣","18224623095"));
        contacts.add(new Contact("良秀珍","15283920491"));
        contacts.add(new Contact("仉波","15653547955"));
        contacts.add(new Contact("贺冬梅","15148183126"));
        contacts.add(new Contact("程莉","15981487868"));
    }

    /**
     * 3. 设定 RecyclerView
     */
    private void setupRecyclerView() {

        // 首先将我们编写的适配器 ContactAdapter 实例化出来,
        // 我们写的这个类的构造函数是一个带参的函数, 可以把集合元素一并传进去
        contactAdapter = new ContactAdapter(contacts);

        // 设置 RecyclerView 的布局管理器, 根据需要选择即可，
        // 通讯录需要一个从上到下的列表，所以这里我使用的是 LinearLayout 线性布局
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        // 将我们实例化后的 ContactAdapter 的对象设置到 RecyclerView 控件上
        recyclerView.setAdapter(contactAdapter);
    }
}